home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / source / xdme_1.84_src.lha / XDME / Util / Var / Dyn.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-12-22  |  2.2 KB  |  78 lines

  1. /******************************************************************************
  2.  
  3.     MODULE
  4.     DYN.h
  5.  
  6.     DESCRIPTION
  7.     Header File for ``Dynamic Strings''
  8.  
  9.     HISTORY
  10.     29-09-94 b_noll created
  11.  
  12. ******************************************************************************/
  13.  
  14. #ifndef DYN_H
  15. #define DYN_H 1
  16.  
  17. #include <stdarg.h>
  18.  
  19. struct _DSTR {
  20.     int   len;
  21.     int   use;
  22.     char  str[1];
  23. }; /* struct DSTR */
  24. #define DSTR struct _DSTR *
  25.  
  26. #ifndef TRUE
  27. #define BOOL int
  28. #endif
  29.  
  30. #define EmptyDyn NULL
  31.  
  32. void DynInit    (DSTR *pstr);
  33. void DynClear    (DSTR *pstr);
  34. void DynDelete    (DSTR *pstr);
  35. void DynReset    (DSTR *pstr);
  36. void DynErase    (DSTR *pstr);
  37. char*DynValue    (DSTR *pstr);
  38. int  DynSize    (DSTR *pstr);
  39. int  DynLen    (DSTR *pstr);
  40. BOOL DynDel    (DSTR *pstr, int pos, int chars);
  41. BOOL DynExpand    (DSTR *pstr, int max);
  42. BOOL DynIns    (DSTR *pstr, const char *src, int pos);
  43. BOOL DynCat    (DSTR *pstr, const char *src);
  44. BOOL DynCpy    (DSTR *pstr, const char *src);
  45. BOOL DynSCpy    (DSTR *pstr, const char *src);
  46. BOOL DynDIns    (DSTR *pstr, DSTR *src, int pos);
  47. BOOL DynDCat    (DSTR *pstr, DSTR *src);
  48. BOOL DynDCpy    (DSTR *pstr, DSTR *src);
  49. BOOL DynDSCpy    (DSTR *pstr, DSTR *src);
  50. BOOL vDynAppend (DSTR *pstr, int num, va_list adds);
  51. BOOL vDynPrintf (DSTR *pstr, const char *tplt, va_list args);
  52. int  DynPutc    (DSTR *pstr, int chr);
  53. BOOL DynGetFile (DSTR *pstr, const char *name);
  54.  
  55. #ifdef STREAM /* ---- Really so ? */
  56. BOOL DynGIns    (DSTR *pstr, int pos, STREAM instream, char *(read)(STREAM));
  57. #endif
  58.  
  59. #ifndef NO_DYNSTR_MACROS
  60. #define BRA_ do{
  61. #define KET_ }while(0)
  62.  
  63. #define DynInit(pstr)   *(pstr) = EmptyDyn
  64. #define DynDelete(pstr) DynClear(pstr)
  65. #define DynClear(pstr) BRA_ DSTR d;if((d=*(pstr)))free(d);*(pstr)=EmptyDyn;KET_
  66. #define DynReset(pstr) BRA_ DSTR d;if((d=*(pstr)))d->use=strlen(d->str);   KET_
  67. #define DynErase(pstr) BRA_ DSTR d;if((d=*(pstr)))d->use=d->str[0]=0;      KET_
  68. #define DynValue(pstr)  ((*(pstr))? ((*(pstr))->str): "")
  69. #define DynSize(pstr)   ((*(pstr))? ((*(pstr))->len): 0)
  70. #define DynLen(pstr)    ((*(pstr))? ((*(pstr))->use): 0)
  71.  
  72. #endif /* !NO_DYNSTR_MACROS */
  73. #endif /* !DYN_H */
  74.  
  75. /******************************************************************************
  76. *****  END DYN.h
  77. ******************************************************************************/
  78.